package central;
import gnu.io.SerialPortEvent;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

import Conexion.ComunicacionArduino;
import GUI.Ventana;
import control_monitor.Monitor;


public class pieza_A2 implements Runnable{

	private Monitor monitor; 
	ComunicacionArduino robot1, robot2, robot3;
	Ventana gui;
	
	public pieza_A2(Monitor monit,ComunicacionArduino _robot1, ComunicacionArduino _robot2, 
			ComunicacionArduino _robot3, Ventana _gui){
		monitor=monit;
		robot1 = _robot1;
		robot2 = _robot2;
		robot3 = _robot3;
		gui = _gui;
	}
	
	private void esperar(ComunicacionArduino robot)
	{
		boolean respuesta = false;
		while(!respuesta)
		{
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			SerialPortEvent s = new SerialPortEvent(robot.puerto(), 1, false, true); 
			
			if(robot.serialEvent2(s).equals("fin"))
			{
				respuesta = true;
			}		
		}
		
	}
	
	public void run(){	
			
		
			//Llega pieza A.
			monitor.ejecutar_transicioninicial(1);	
			gui.setnumI(1, 1);
		
			
			
			monitor.ejecutar_transicioninicial(4);
			//ARDUINO R1 va al I
			robot1.sendMessage("I");
			//R1 va a I1
			gui.SetRobot(1, 4);
			gui.setnumI(1, -1);
			esperar(robot1);
			
			
			
			
			monitor.ejecutar_transicion(6);
			//ARDUINO R1 va a M3
			robot1.sendMessage("3");
			//R1 deja en M3
			gui.SetRobot(1, 7);
			gui.setMaquina(3, 1, 1);
			esperar(robot1);
			

			
			
			monitor.ejecutar_transicion(8);
			//ARDUINO R2 va a M3
			robot2.sendMessage("3");
			//R2 toma de M3
			gui.SetRobot(2, 1);
			gui.setMaquina(3, -1, 1);	
			esperar(robot2);
			
						
			
			monitor.ejecutar_transicion(10);
			//ARDUINO R2 va a M4
			robot2.sendMessage("4");
			//R2 deja en M4
			gui.SetRobot(2, 7);
			gui.setMaquina(4, 1, 1);
			esperar(robot2);
			
	
			
			
			monitor.ejecutar_transicion(12);
			//ARDUINO R3 va a M4
			robot3.sendMessage("4");
			//R3 toma de M4
			gui.SetRobot(3, 1);
			gui.setMaquina(4, -1, 1);
			esperar(robot3);
			
			
			
			//ARDUINO R3 va a O
			robot3.sendMessage("O");
			//R3 deja en O
			gui.SetRobot(3, 0);
			gui.setnumO(1, 1);
			esperar(robot3);
			monitor.ejecutar_transicion(13);
			
			
			
			
			System.out.println("ya termino el camino A");
	}
}
